/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package obiekty;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 *Klasa opisująca grupę obiektów ruchomych - jej strukturę itp.
 * @author m
 */
public class Grupa {

    protected ObiektRuchomy przywodca;
    protected List<ObiektRuchomy> listaObiektow;

    public Grupa()
    {
        listaObiektow = Collections.synchronizedList(new LinkedList<ObiektRuchomy>());
    }
    
    public ObiektRuchomy getPrzywodca()
    {
        return przywodca;
    }

    public void setPrzywodca(ObiektRuchomy przywodca)
    {
        this.przywodca = przywodca;
    }
    
    private void removePrzywodca(ObiektRuchomy o)
    {
        if (o.equals(przywodca))
        {
            przywodca = null;
        }
    }
    
    public List<ObiektRuchomy> getListaObiektow()
    {
        return listaObiektow;
    }

    public void setListaObiektow(LinkedList<ObiektRuchomy> listaObiektow)
    {
        this.listaObiektow = Collections.synchronizedList(listaObiektow);
    }
    
    public void addObiekt(ObiektRuchomy o)
    {
        synchronized(listaObiektow)
        {
            listaObiektow.add(o);
        }
    }
    
    public void removeObiekt(ObiektRuchomy o)
    {
       removePrzywodca(o);
       synchronized(listaObiektow)
       {
            listaObiektow.remove(o); 
       }
    }
}
